package com.hhoss.lang;

public interface Beans {
	
	 /** 
	 * @param name
	 *            bean注册名
	 * @return Object 返回requiredType类型对象
	 */
	public <T> T get(String name);
	
	/**
	 * 获取类型为requiredType的对象
	 * 如果bean不能被类型转换，相应的异常将会被抛出（BeanNotOfRequiredTypeException）
	 * 
	 * @param name
	 *            bean注册名
	 * @param requiredType
	 *            返回对象类型
	 * @return Object 返回requiredType类型对象
	 * @throws BeansException
	 */
	public <T> T get(String name, Class<T> requiredType);
	
	/**
	 * 从静态变量ApplicationContext中取得Bean, 根据clazz返回bean,有多个的时只返回第1个.
	 */
	public <T> T get(Class<T> clazz);

	/**
	 * 如果BeanFactory包含一个与所给名称匹配的bean定义，则返回true
	 * 
	 * @param name
	 * @return boolean
	 */
	public boolean contain(String name);

	/**
	 * @param name
	 * @return Class 注册对象的类型
	 * @throws NoSuchBeanDefinitionException
	 */
	public Class<?> getType(String name) ;

	/**
	 * 如果给定的bean名字在bean定义中有别名，则返回这些别名
	 * 
	 * @param name
	 * @return
	 * @throws NoSuchBeanDefinitionException
	 */
	public String[] getAliases(String name) ;


}
